package dancetiktokmodelmysql

import (
	"database/sql/driver"
	"encoding/json"
	"gorm.io/gorm"
	"time"
)

// 后台平台菜单表
type DanceElement struct {
	Id                 int64  `gorm:"primaryKey;autoIncrement;comment:id" json:"id"`
	Icon               string `json:"icon" gorm:"column:icon;type:varchar(256);not null;default:'';comment:缩略图地址"`                                                                // 缩略图地址
	No                 string `json:"no" gorm:"column:no;type:varchar(256);not null;default:'';comment:元素编号-参考 10465705，运营人员录入的"`                                                 // 元素编号-参考 10465705，运营人员录入的
	FileNo             string `json:"fileNo" gorm:"column:file_no;type:varchar(256);not null;default:'';comment:元素编号-参考 10465705，运营人员录入的"`                                        // 元素编号-参考 10465705，运营人员录入的
	Name               string `json:"name" gorm:"column:name;type:varchar(256);not null;default:'';comment:元素名字-运营人员填写"`                                                          // 元素名字-运营人员填写
	ElementLocal       string `json:"elementLocal" gorm:"column:element_local;type:varchar(256);not null;default:'';comment:1:头发;2:脸;5:上半身;6:下半身;8:鞋子,11:左手持,12:右手持,14:头顶,15：背后"` // 元素名字-运营人员填写
	Sex                int    `json:"sex" gorm:"column:sex;type:tinyint;default:0;not null;comment:是否缓存 0男 1女"`                                                                   // 是否缓存 0否 1是
	Attributes         int    `json:"attributes" gorm:"column:attributes;type:tinyint;default:0;not null;comment:使用属性"`                                                           // 是否缓存 0否 1是
	ValidityPeriodGive int    `json:"validityPeriodGive" gorm:"column:validity_period_give;type:tinyint;default:0;not null;comment:是否可赠送"`                                        // 是否可赠送 0不可赠送 1可赠送
	Derived            int    `json:"derived" gorm:"column:derived;type:tinyint;default:0;not null;comment:是否派生"`                                                                 // 是否缓存 0否 1是
	EleType            int64  `json:"eleType" gorm:"column:ele_type;type:bigint;default:0;not null;comment:一级类型"`                                                                 // 是否缓存 0否 1是
	ElePart            int64  `json:"elePart" gorm:"column:ele_part;type:bigint;default:0;not null;comment:二级类型"`
	EleTag             string `json:"eleTag" gorm:"column:ele_tag;type:varchar(256);not null;default:'';comment:标签"`
	Quality            int64  `json:"quality" gorm:"column:quality;type:bigint;default:0;not null;comment:品质"`
	EleGene            string `json:"eleGene" gorm:"column:ele_gene;type:varchar(256);not null;default:'';comment:基因-额外附加解析内容"`
	ElePrivate         int64  `json:"elePrivate" gorm:"column:ele_private;type:bigint;default:0;not null;comment:私有共有区分"`
	Coefficient        int64  `json:"coefficient" gorm:"column:coefficient;type:bigint;default:0;not null;comment:系数"`
	//ElementLocalList []ElementLocal `json:"elementLocalList" gorm:"column:element_local_list;type:json;not null;default:'';comment:1:头发;2:脸;5:上半身;6:下半身;8:鞋子,11:左手持,12:右手持,14:头顶,15：背后"` // 元素名字-运营人员填写
	CreateId  int64          `json:"create_id" gorm:"column:create_id;type:bigint;default:0;not null;comment:创建人id"` // 创建人id
	UpdateId  int64          `json:"update_id" gorm:"column:update_id;type:bigint;default:0;not null;comment:更新人id"` // 更新人id
	CreatedAt time.Time      `json:"created_at" gorm:"column:created_at;type:datetime"`
	UpdatedAt time.Time      `json:"updated_at" gorm:"column:updated_at;type:datetime"`
	DeletedAt gorm.DeletedAt `gorm:"index;type:datetime" json:"-"`
}

//type ElementLocalList []*ElementLocal

type ElementLocal struct {
	Code             int    `json:"code"`
	ElementLocalName string `json:"ElementLocalName"`
}

func (c ElementLocal) Value() (driver.Value, error) {
	b, err := json.Marshal(c)
	return string(b), err
}

func (c *ElementLocal) Scan(input interface{}) error {
	return json.Unmarshal(input.([]byte), c)
}
